export default function (module, exports, __webpack_require__) {

    var Path = __webpack_require__("cbe5");

    var _subPixelOptimize = __webpack_require__("9cf9");

    var subPixelOptimizeLine = _subPixelOptimize.subPixelOptimizeLine;

    /**
    * 直线
    * @module zrender/graphic/shape/Line
    */
    // Avoid create repeatly.
    var subPixelOptimizeOutputShape = {};

    var _default = Path.extend({
        type: 'line',
        shape: {
            // Start point
            x1: 0,
            y1: 0,
            // End point
            x2: 0,
            y2: 0,
            percent: 1
        },
        style: {
            stroke: '#000',
            fill: null
        },
        buildPath: function (ctx, shape) {
            var x1;
            var y1;
            var x2;
            var y2;

            if (this.subPixelOptimize) {
                subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);
                x1 = subPixelOptimizeOutputShape.x1;
                y1 = subPixelOptimizeOutputShape.y1;
                x2 = subPixelOptimizeOutputShape.x2;
                y2 = subPixelOptimizeOutputShape.y2;
            } else {
                x1 = shape.x1;
                y1 = shape.y1;
                x2 = shape.x2;
                y2 = shape.y2;
            }

            var percent = shape.percent;

            if (percent === 0) {
                return;
            }

            ctx.moveTo(x1, y1);

            if (percent < 1) {
                x2 = x1 * (1 - percent) + x2 * percent;
                y2 = y1 * (1 - percent) + y2 * percent;
            }

            ctx.lineTo(x2, y2);
        },

        /**
            * Get point at percent
            * @param  {number} percent
            * @return {Array.<number>}
            */
        pointAt: function (p) {
            var shape = this.shape;
            return [shape.x1 * (1 - p) + shape.x2 * p, shape.y1 * (1 - p) + shape.y2 * p];
        }
    });

    module.exports = _default;


}